﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Client
{
    #region Object Repositories

    public interface IBaseRepository
    {
    }

    public interface IPositionRepository : IBaseRepository
    {
        Position GetData();
        
        bool AddPosition(Position position);
        bool EditPosition(Position oldPosition, Position newPosition);
        bool DeletePosition(Position position);
        
        IEnumerable<Position> GetAll();
    }

    public interface IBankAccountRepository : IBaseRepository
    {
        BankAccount GetData();
        
        bool AddBankAccount(BankAccount bankAccount);
        bool EditBankAccount(BankAccount oldBankAccount, BankAccount newBankAccount);
        bool DeleteBankAccount(BankAccount bankAccount);

        IEnumerable<Task> GetAll();
    }

    public interface IPaymentRepository : IBaseRepository
    {
        IEnumerable<Payment> GetData(Employee employee);

        bool AddPayment(Employee employee, int sum);
        bool EditPayment(Payment oldPayment, Payment newPayment);
        bool DeletePayment(Payment payment);

        IEnumerable<Payment> GetAll();
    }

    public interface ITaskRepository : IBaseRepository
    {
        IEnumerable<Task> GetData();

        bool AddTask(Task task);
        bool EditTask(Task oldTask, Task newTask);
        bool DeleteTask(Task task);

        IEnumerable<Task> GetAll();

        bool FinishTask(Task task);
    }

    public interface ITimeTableRepository : IBaseRepository
    {
        IEnumerable<TimeTable> GetData();
        
        bool LogIn();
        bool LogOut();

        IEnumerable<TimeTable> GetAll();
    }

    public interface IEmployeeRepository : IBaseRepository
    {
        Employee GetData();

        bool AddEmployee(Employee employee);
        bool EditEmployee(Employee oldEmployee, Employee newEmployee);
        bool DeleteEmployee(Employee employee);

        IEnumerable<Employee> GetAll();
    }

    #endregion
}
